//
//  TFStyle.h
//  TFFoundation
//
//  Created by TFAppleWork-Summer on 2017/3/28.
//  Copyright © 2017年 TFAppleWork-Summer. All rights reserved.
//

#import <UIKit/UIKit.h>

@class TFStateViewConfigModel;

#define TFSTYLE(name) [(id)[TFStyle currentStyle] name]

#define TFFONT(size) [UIFont systemFontOfSize:size]

#define TFBOLDFONT(size) [UIFont boldSystemFontOfSize:size]

/**
 全局统一的样式定制类
 */
@interface TFStyle : NSObject

/**
 当前的样式类，默认会取最后一个子类作为当前的样式类
 */
@property (class, nonatomic, strong, nonnull) __kindof TFStyle *currentStyle;

///=============================================================================
/// @name UINavigationBar样式定制
///=============================================================================

/**
 导航栏默认背景图片，若设置此属性，则导航栏会变为不透明
 */
@property (nonatomic, strong, readonly, nullable) UIImage *navigationBarBackgroudImage;

/**
 导航栏默认背景色，若设置此属性，则导航栏会变为透明，默认[UIColor whiteColor]
 */
@property (nonatomic, strong, readonly, nullable) UIColor *navigationBarBackgroudColor;

/**
 导航栏标题颜色，默认[UIColor blackColor]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *navigationBarTitleColor;

/**
 导航栏字体大小，默认18
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *navigationBarTitleFont;

///=============================================================================
/// @name UIBarButtonItem样式定制
///=============================================================================

/**
 UIBarButtonItem标题类型按钮字体颜色，默认[UIColor blackColor]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *barButtonItemTitleColor;

/**
 UIBarButtonItem标题类型按钮不可点击状态下字体颜色，默认[UIColor colorWithWhite:0.48 alpha:0.35]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *barButtonItemDisableTitleColor;

/**
 UIBarButtonItem标题类型按钮字体大小，默认16
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *barButtonItemTitleFont;

/**
 UIBarButtonItem着色
 */
@property (nonatomic, strong, readonly, nullable) UIColor *barButtonItemTintColor;

/**
 返回按钮图片
 */
@property (nonatomic, strong, readonly, nullable) UIImage *barButtonBackItemImage;

/**
 返回按钮标题
 */
@property (nonatomic, strong, readonly, nullable) NSString *barButtonBackItemTitle;

///=============================================================================
/// @name UITableView样式定制
///=============================================================================

/**
 列表视图背景色，默认和vcBackgroundColor相同
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *tableViewBackgroundColor;

/**
 列表视图分割线颜色，默认cccccc
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *tableViewSeparatorColor;

/**
 MJ刷新头部类,默认MJRefreshNormalHeader
 */
@property (nonatomic, strong, nonnull) Class tableViewMJRefreshHeaderClass;

/**
 MJ刷新尾部类，默认MJRefreshAutoNormalFooter
 */
@property (nonatomic, strong, nonnull) Class tableViewMJRefreshFooterClass;

///=============================================================================
/// @name UITableViewCell样式定制
///=============================================================================

/**
 cell选中样式，默认UITableViewCellSelectionStyleNone
 */
@property (nonatomic, assign, readonly) UITableViewCellSelectionStyle tableViewCellSelectionStyle;

///=============================================================================
/// @name UICollectionView样式定制
///=============================================================================

/**
 UICollectionView背景色，默认同vcBackgroundColor
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *collectionViewBackgroundColor;

///=============================================================================
/// @name 状态栏样式定制
///=============================================================================

/**
 状态栏样式，默认UIStatusBarStyleDefault
 */
@property (nonatomic, assign, readonly) UIStatusBarStyle statusBarStyle;

///=============================================================================
/// @name UITabBarItem样式定制
///=============================================================================

/**
 底部标签栏字体大小，默认11
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *tabBarItemTitleFont;

/**
 底部标签栏普通状态下字体的颜色，默认[UIColor blackColor]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *tabBarItemNormalTitleColor;

/**
 底部标签栏选择状态下字体的颜色，默认[UIColor blueColor]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *tabBarItemSelectTitleColor;

///=============================================================================
/// @name 输入框（UITextField和UITextView）样式定制
///=============================================================================

/**
 输入框文字颜色，默认333333
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *inputTextColor;

/**
 输入框字体大小，默认14
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *inputTextFont;

/**
 输入框placehodler颜色，默认999999
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *inputPlaceholderColor;

/**
 输入框placehodler字体大小，默认14
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *inputPlaceholderFont;

/**
 输入框清空按钮出现模式，默认UITextFieldViewModeWhileEditing
 */
@property (nonatomic, assign, readonly) UITextFieldViewMode inputClearButtonMode;

///=============================================================================
/// @name TFWebViewController样式定制
///=============================================================================

/**
 进度条-已完成的颜色，默认[UIColor greenColor]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *webVCProgressTintColor;

/**
 进度条-未完成的颜色，默认同vcBackgroundColor
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *webVCTrackTintColor;

///=============================================================================
/// @name viewState样式定制
///=============================================================================

/**
 加载时的占位图配置数据模型
 */
@property (nonatomic, strong, readonly, nonnull) TFStateViewConfigModel *viewStateLoadingConfigModel;

/**
 无数据时的占位图配置数据模型
 */
@property (nonatomic, strong, readonly, nonnull) TFStateViewConfigModel *viewStateNoDataConfigModel;

/**
 有错误时的占位图配置数据模型
 */
@property (nonatomic, strong, readonly, nonnull) TFStateViewConfigModel *viewStateErrorConfigModel;

///=============================================================================
/// @name 常用颜色定义
///=============================================================================

/**
 默认viewController的view背景色,默认[UIColor whiteColor]
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *vcBackgroundColor;

/**
 浅灰色，999999
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *lightGrayColor;

/**
 灰色，666666
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *grayColor;

/**
 黑色，333333
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *blackColor;

/**
 白色，ffffff
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *whiteColor;

/**
 蓝色，069BF2
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *blueColor;

/**
 绿色，6cc667
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *greenColor;

/**
 橙色，ff8c4d
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *orangeColor;

/**
 黄色，ffff00
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *yellowColor;

/**
 红色，f01204
 */
@property (nonatomic, strong, readonly, nonnull) UIColor *redColor;


///=============================================================================
/// @name 常用字体定义
///=============================================================================

/**
 10大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font10;

/**
 10B大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font10B;

/**
 12大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font12;

/**
 12B大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font12B;

/**
 14大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font14;

/**
 14B大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font14B;

/**
 16大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font16;

/**
 16B大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font16B;

/**
 18大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font18;

/**
 18B大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font18B;

/**
 20大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font20;

/**
 20B大小的字体
 */
@property (nonatomic, strong, readonly, nonnull) UIFont *font20B;

@end
